package Server.View;

import Server.Bean.Express;
import Server.User;

import java.util.*;

public class View {
    private Scanner input = new Scanner(System.in);
    public void welcome(){
        System.out.println("------------欢迎使用哪都通快递管理系统------------");
        System.out.println("------操作完后请正常退出，否则此次操作不做记录-------");
    }

    public User login(){
        User user = new User();
        System.out.println("请输入账号:");
        user.setUsername(input.nextLine());
        System.out.println("请输入密码:");
        user.setPassword(input.nextLine());
        return user;
    }
    public void bey(){
        System.out.println("谢谢使用快递管理系统，欢迎下次再来^_^");
    }
    /**
     * 、选择身份主菜单
     * @return 身份码
     */
    public int menu(){
        System.out.println("请根据提示输入功能序号");
        System.out.println("1:快递员");
        System.out.println("2:用户");
        System.out.println("0:退出");
        String text = input.nextLine();

        int num=-1;

        try {
            num = Integer.parseInt(text);
        }catch (NumberFormatException e){

        }
        if(num<0 || num>2){
            System.out.println("输入错误，请重新输入!");
            return menu();
        }
        return num;
    }

    /**
     * 快递员菜单
     * @return 操作码
     */
    public int cMenu(){
        System.out.println("请根据提示输入功能序号");
        System.out.println("0:退出程序");
        System.out.println("1:快递录入");
        System.out.println("2:快递修改");
        System.out.println("3:快递删除");
        System.out.println("4:查看所有快递");
        String text = input.nextLine();
        int num=-1;
        try {
            num = Integer.parseInt(text);
        }catch (NumberFormatException e){

        }
        if(num<0 || num>4){
            System.out.println("输入错误，请重新输入!");
            return cMenu();
        }
        return num;
    }

    /**
     * 用户的菜单
     * @return 取件码
     */
    public int uMenu(){
        System.out.println("请输入取件码:");
        int num=-1;
        String code = input.nextLine();
        try {
            num = Integer.parseInt(code);
        }catch (NumberFormatException e){

        }
        if(num<100000 || num>999999){
            System.out.println("输入错误，请重新输入!");
            return uMenu();
        }
        return num;
    }

    /**
     * 快递录入
     * @return 包含了快递单号和公司的快递对象
     */
    public Express insert(){
        System.out.println("请根据提示输入快递信息");
        System.out.println("请输入快递单号:");
        String number = input.nextLine();
        System.out.println("请输入公司:");
        String company = input.nextLine();
        Express e = new Express();
        e.setNumber(number);
        e.setCompany(company);
        return e;
    }

    /**
     * 提示用户输入快递单号
     * @return 快递单号
     */
    public String findBynumber(){
        System.out.println("请输入要操作的快递单号");
        String number = input.nextLine();
        return number;
    }

    /**
     * 显示快递信息
     * @param e
     */
    public void printExpress(Express e){
        System.out.println("快递信息如下:");
        System.out.println("快递公司:"+e.getCompany()+"  快递单号:"+e.getNumber()+"  取件码:"+e.getCode());
    }

    /**
     *HashMap传输缺少刚添加的快递，所以弃用了
     * 显示所有快递
     * @param
     */
    public void printAll(HashMap<String, Express> data){
        if(data.size()==0){
            System.out.println("暂无快递");
            return;
        }
        Set<String> set = data.keySet();
        for (String s: set) {
            System.out.println("第"+data.get(s).getX()+"排"+",第"+data.get(s).getY()+"列快递:");
            printExpress(data.get(s));
        }
    }

    /**
     * 显示所以快递
     * @param data
     */
    public void printAllList(Express[] data){
        if(data.length!=0){
            for (Express e : data) {
                System.out.print("第"+e.getX()+"排"+",第"+e.getY()+"列快递:");
                printExpress(e);
            }
        }else{
            System.out.println("暂无快递");
        }



    }
    /**
     * 修改快递信息
     * @param
     */
    public Express update(){
        Express express = new Express();
        System.out.println("请输入新的快递单号:");
        String number = input.nextLine();
        express.setNumber(number);
        System.out.println("请输入新的快递公司:");
        String company = input.nextLine();
        express.setCompany(company);
        return express;
    }

    /**
     * 询问是否确认删除
     * @return
     */
    public int delete(){
        System.out.println("是否确认删除");
        System.out.println("1.确认");
        System.out.println("2.取消");
        int num=-1;
        String code = input.nextLine();
        try {
            num = Integer.parseInt(code);
        }catch (NumberFormatException e){

        }
        if(num<1 || num>2){
            System.out.println("输入错误，请重新输入!");
            return delete();
        }
        return num;
    }

    /**
     * 快递存在时打印
     */
    public void expressExist(){
        System.out.println("此单号在快递中已存在，请勿重复存储");
    }

    /**
     * 快递不存在时打印
     */
    public void expressNull(){
        System.out.println("此快递不存在，请检查输入是否有误");
    }

    /**
     * 打印取件码
     */
//    public void printCode(Express e){
//        System.out.println("快递的取件码为:"+e.getCode());
//    }

    public void completion(){
        System.out.println("快递柜已满！");
    }
    public void success(){
        System.out.println("操作成功");
    }
    public void loginFailure(){
        System.out.println("登录失败");
        System.out.println("账号或密码错误");
    }
    public void loginSuccessfully(){
        System.out.println("登录成功！");
    }
}
